package org.nutz.easy;

import java.util.HashMap;
import java.util.List;

/**
 * <p>Title: DB action interface</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2009</p>
 * @author defier Lai
 * <p>Date: 2009-10-1 上午12:26:31</p>
 * @version 1.0
 * @param <T>
 */
public interface Record<T> {

	public final static String WHERE = "where";
	
	public final static String ORDER = "order";
	
	public final static String GROUP = "group";
	
	public final static String LIMIT = "limit";
	
	/**
	 * 新增一条新记录
	 */
	public void save();

	/**
	 * 根据ID查询记录
	 * @param id
	 */
	public T find(Long id);
	
	/**
	 * 根据主键值查询记录
	 * @param name
	 * @return
	 */
	public T find(String name);
	
	/**
	 * 根据where条件查询记录首条记录
	 * @param condition-> where后的条件字符串
	 * @return
	 */
	public T findFirst(String condition);
	/**
	 * 根据where条件查询记录首条记录
	 * @param condition-> where后的条件字符串
	 * @return
	 */
	public T findFirst(HashMap<String, String> condition);
	
	/**
	 * 根据where条件查询记录所有记录
	 * @param condition-> where后的条件字符串
	 * @return
	 */
	public List<T> findAll(String condition);
	
	/**
	 * 根据where条件查询记录所有记录
	 * @param condition-> where后的条件字符串
	 * @return
	 */
	public List<T> findAll(HashMap<String, String> condition);
	
	/**
	 * 更新记录
	 */
	public void update();
	
	/**
	 * 根据ID查询记录
	 * @param id
	 */
	public void delete(Long id);

	/**
	 * 删除主键值等于name的记录
	 * @param name
	 */
	public void delete(String name);

	/**
	 * 查询所有记录
	 * @return
	 */
	public List<T> findAll();
	/**
	 * 根据sql查询
	 * @return
	 */
	public List<T> findBySql(String sql);

	/**
	 * 删除所有记录
	 */
	public void deleteAll();
}
